package com.clay.appointment.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.clay.appointment.common.page.PageInfo;
import com.clay.appointment.entity.hospital.HospitalSet;
import com.clay.appointment.vo.hospital.HospitalSetQueryVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @Author : clay
 * @Description:
 * @Date: Create in 16:59 2021/7/20
 * @Modified By:
 */
public interface HospitalSetService extends IService<HospitalSet> {
    /**
     * 分页条件查询数据
     *
     * @param hospitalSetQueryVo Vo类，包含医院名称，医院编号，当前页、页码
     * @return PageInfo<HospitalSet>
     */
    PageInfo<HospitalSet> findPageHospitalSet(HospitalSetQueryVO hospitalSetQueryVo);

    /**
     * 查找所有的医院设置
     *
     * @return List<HospitalSet>
     */
    List<HospitalSet> findAllHospitalSet();

    /**
     * 删除指定id的医院设置
     *
     * @param id 医院设置id
     * @return Integer 删除条数
     */
    Integer removeHospitalSetById(Long id);

    /**
     * 添加医院设置
     *
     * @param hospitalSet 医院设置的对象
     * @return Integer添加条数
     */
    Integer saveHospitalSet(HospitalSet hospitalSet);

    /**
     * 锁定医院设置
     *
     * @param id     医院设置id
     * @param status 医院设置状态
     * @return Integer
     */
    Integer lockHospitalSet(Long id, boolean status);

    /**
     * 发送签名密钥
     *
     * @param id 医院设置id
     * @return Integer
     */
    Integer sendKeyById(Long id);

    /**
     *
     * @param list 要删除的id的集合
     * @return 返回删除的条数
     */
    Integer batchRemoveHospitalSet(List<Long> list);

    /**
     *
     * @param hospitalSet 医院设置实体类
     * @return 修改的条数
     */
    Integer updateHospitalSetById(HospitalSet hospitalSet);

    /**
     *
     * @param hospitalCode 医院编号
     * @return 返回签名密钥
     */
    String getSignKey(String hospitalCode);

    /**
     *
     * @param request 请求参数
     * @return 正确则返回map
     */
    Map<String, Object> JudgSign(HttpServletRequest request);

    /**
     *
     * @param sign 密钥
     * @param hospitalCode 医院编号
     * @return 是否密钥一致
     */
    Boolean JudgeSign(String sign, String hospitalCode);
}
